package cn.bonoon.kernel.web.annotations.form;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import cn.bonoon.kernel.annotations.Constant;

/**
 * <pre>
 * 表示包含了添加和修改的界面
 * 
 * 如果指定了FormEditor，由表示该实体使用添加和修改两种界面的生成模式；
 * {@link FormEditor}可以与{@link FormInsert}或{@link FormUpdate}组合使用，
 * FormEditor是表示在没有具体指定{@link FormInsert}或{@link FormUpdate}时提供的默认值，
 * 如果指定了{@link FormInsert}或{@link FormUpdate}则会优先使用这两个注解的指定值
 * {@link FormInsert}和{@link FormUpdate}同时和FormEditor同时使用，则可以把公共的参数定义
 * 在FormEditor注解上，在{@link FormInsert}或{@link FormUpdate}不需要定义值
 * 
 * 对属性的定义可以使用{@link PropertyEditor}或具体指定添加或修改的注解{@link PropertyInsert}/{@link PropertyUpdate}
 * 
 * 可以使用分组指定{@link cn.bonoon.kernel.web.annotations.form.FormGroup @FormGroup}
 * 
 * 可以追加帮助说明{@link cn.bonoon.kernel.web.annotations.form.FormHelper @FormHelper}
 * 
 * 可以使用{@link cn.bonoon.kernel.web.annotations.components.AsTabs AsTabs}来把界面生成tabs样式
 * <hr/>
 * 可以追加没有在实体定义(即类所定义的字段)的可以通过{@link InsertCells}或{@link InsertCell}追加进来
 * </pre>
 * @author jackson
 *
 */
@Target(TYPE)
@Retention(RUNTIME)
public @interface FormEditor {
	/**
	 * column表示一行上显示多少个字段
	 * @return
	 */
	int value() default 1;

	int headWidth() default Constant.DEFAULT_HEAD_WIDTH;

	int width() default Constant.DEFAULT_WIDTH;
	
	String formStyleClass() default "";
}
